import { showModal, showToast } from '../../utils/asyncWx'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    //地址的数据
    address: {},
    //购物车的数据
    cart: [],
    //控制全选
    allChecked: false,
    //总价格
    totalPrice: 0,
    // 总数量
    totalNum: 0,

  },
  // onLoad () {
  //   const cart = wx.getStorageSync('cart') || []
  //   this.setData({
  //     cart,
  //   })


  // },

  onShow () {


    //获取缓存中的数据
    let address = wx.getStorageSync('address')
    // 获取缓存中购物车的数据
    const cart = wx.getStorageSync('cart') || []
    // 计算全选every()会接受一个回调函数，当每个回调函数都为true时，才会返回true
    // const allChecked = cart.length ? cart.every(v => v.checked) : false
    //总价格和总数量 
    this.setData({
      address,
    })

    this.setCart(cart)





  },
  //点击收获地址
  handleChooseAddress () {
    //wx.chooseAddress官方自带的获取收获地址的事件
    wx.chooseAddress({
      success: (result) => {
        //将数据存入缓存中
        const address = result
        wx.setStorageSync('address', address)
      }
    })
  },
  //商品选中复选框
  handeItemChange (e) {
    const goods_id = e.currentTarget.dataset.id
    //获取购物车数据
    let { cart } = this.data
    //获取被修改的对象
    let index = cart.findIndex(v => v.goods_id === goods_id)
    cart[index].checked = !cart[index].checked
    this.setCart(cart)



  },
  //封装一个函数 设置购物车状态 重新计算 底部工具栏的数据 全选 总价格 购买的数量
  setCart (cart) {

    //重新计算
    let allChecked = true

    //总价格和总数量 
    let totalPrice = 0
    let totalNum = 0
    cart.forEach(v => {
      if (v.checked) {
        totalPrice += v.num * v.goods_price
        totalNum += v.num
      } else {
        allChecked = false
      }
    })
    allChecked = cart.length != 0 ? allChecked : false
    //把修改好的数据设置会data和缓存中
    this.setData({
      cart,
      totalPrice,
      totalNum,
      allChecked
    })
    wx.setStorageSync('cart', cart)
  },
  //商品全选
  handleItemAllCheck (e) {
    //获取data里的数据
    let { cart, allChecked } = this.data
    //修改值
    allChecked = !allChecked
    //循环修改商品的单个复选框的值
    cart.forEach(v => {
      v.checked = allChecked
    })
    this.setCart(cart)


  },
  //购物车加减
  async handleItemNumEdie (e) {

    const { operation, id } = e.currentTarget.dataset
    //获取购物车数组
    let { cart } = this.data
    // 找到需要修改商品的索引
    const index = cart.findIndex(v => v.goods_id === id)
    //判断是否删除商品
    if (cart[index].num === 1 && operation === -1) {
      const res = await showModal({ content: "是否删除该商品" })
      if (res.confirm) {
        cart.splice(index, 1)
        this.setCart(cart)
      }
    } else {
      cart[index].num += operation
      this.setCart(cart)
    }
  },
  //点击结算
  async handlePay () {
    // 判断是否有收获地址
    const { address, totalNum } = this.data
    if (!address) {
      await showToast({ title: "你还没有选择收获地址" })
      return
    }
    // 判断是否有商品
    if (!totalNum) {
      await showToast({ title: "你还没有选购商品" })
      return
    }
    // 跳转到支付页面
    wx.navigateTo({
      url: '/pages/pay/index',
    })
  }
})